5/10/2006

	-Finished PatternTable class
	-Added PatternTableRange struct with data for Brinstar
	-Added PatternTable property to Level class that loads level's pattern table
	-Added Blitter class to speed up rendering (Graphics.DrawImage much too slow).
	
5/11/2006

	-Drafted basic UI
	-Created MapControl control class and MapRoom enum
	-Added DefaultMap resource and graphic resources for MapControl
	
5/12/2006

	-Deleted MapControl.cs by accident. Recovered with .Net reflector.
	
5/14/2006

	-Added most basic editing functions (toolbar/mouse operations and keyboard shortcuts
	 for moving objects/changing palettes/struct types/screens)
	-Added loading and saving
	-Implemented status bar (except for map editor)
	-Started adding data for more levels
	
5/15/2006

	-Finished finding data offsets for all levels palettes/tiles/combos
	-Added feature to refresh map with door data
	
5/16/2006

	-Added palette editing feature (sprite offsets still need to be added)
		-Added designed usercontrol PalTableEditor.cs
		-Added designed usercontrol PaletteEditor.cs
		-Added class PaletteSelectionInfo (PalTableEditor)
		-Added delegate PalTableEditr.PaletteSelectionEvent
		-Added designed form frmPalette.cs
	-Found sprite graphic offsets
		-added to MetroidFormat.txt
		-added fields to PatternTableRange class with offsets to create PatternTable objects
		
5/17/2006

	-Added sprite patterns to level class
	-Added transparent blit and transparent/flipped blit functions to Blitter class (should
		cover any NES graphics)
		
5/23/2006

	-Added sprite/door drawing to ScreenDisplay.Render.
	-Added properties to get data for ScreenEnemy class
	-Added XML comments for all uncommented publicly visible types/members.
	-Added designer attributes/functions for better serialization of UserControls
	-Began working on combo editing classes
	
5/24/2006

	-Worked on tile selector/combo editor/frmComboEdit
		-Shows combos/tiles for brinstar and allows palette selection
		-combo editor scrolls
		
5/25/2006

	-Added tile painting to combo editor (still can't choose which tiles)
	-Added alternate palette support to combo editor
	-Added ability to select tile for combo editor
	-Added feature to define entire combo (shift+click)
	-Added support for all levels

5/28/2006

	-Added width/height properties to Sprite class/constructor/level sprite definitions

7/29/2007

	- Modified Struct class to account for combos with rows that don't start at left edge of combo (in ExtractTiles())
	- Modified ScreenDisplay class to properly render structs with rows that dont start at left edge of struct
	- Added rectangle drawing function to blitter
	- Added enemy selection	(selection only, sans editing features)
	- Added enemy editing: palette, movement
	- Added Sprite.DrawAlt, which properly renders sprites with offset tiles
	
7/30/2007
	- Added enemy type changing
	- Added ability to swap which side a door is on in rooms with only one door
	- Corrected palette "bleeding" (when an object is behind a second object whose palette is the screen default, the first object's palette will override the second objects on tiles where they overlap).

7/31/2007
	-Added frmStruct to edit background object definitions
	-Added GDI+ struct renderer, combo palette, combo painting
	
8/1/2007
	-Added ability to shift rows left and right in struct editor and move tiles between rows
	-struct editor changes now save back to ROM data upon closing
	-Fixed ScreenControl.ObjectAt to work with structs with shifted rows
	
8/2/2007
	-Improved behavior when moving tiles between rows
    -Added feature to split/join rows of a struct in the struct editor
    -Fixed bug where user could paint "empty tiles" onto a struct in the struct editor
    -Fixed bug where user could paint normal tiles over "empty tiles" in the struct editor.
	-Added map saving with option to save to ROM or to save to external file
	
8/3/2007
	-Struct editor is now shown as a dialog.
	
8/4/2007
	-Modified screen renderer (ScreenDisplay.cs) to limit range of displayed combos from 0 to 64.
	-Added "Display Physics" feature (required updates to ScreenDisplay, ScreenControl, Blitter, frmMain).
	-Updated frmMain to display screen index and map coordinates when they change	

8/7/2007
	-Added help form, including about, "gettings started" and began writing help topics
	-Discovered that physics are based on tile # rather than combo #. This is now reflected in the ScreenDisplay by maintaining a physics buffer in addition to tile and palette buffers. ScreenDisplay.DrawScreenPhysics and ScreenDisplay.DrawObjectPhysics are now obsolete.	

8/12/2007
	-Added GameItem.cs. Items are now shown in the screen editor (editing isnt supported).		

8/14/2007
	-Fixed some bugs with struct editor (limited row length to 16, corrected when certain context menu items are available and when they arent)
	-Added pointer explorer (incomplete)
	-If a structure is selected when the structure editor is opened, that structure will now be brought up in the editor.	

8/15/2007
	-Added feature to toggle when enemies will respawn	
	
8/18/2007
	-Updated default map so that every screen belongs to a level. Updated map editor to filter out screens marked as empty (screen# 0xFF). These two changes essentially allow the screen editor to "guess" what levels each screen belongs to when opening a hacked rom, and ensures that all screens will be marked on the map.

9/2/2007
	-Added title screen text editor
9/3/2007
	-Added map viewer: supports various options (scale, level filtering etc) and is multithreaded.	
	-Updated Sprite class to properly render vertically flipped tiles.	
	-Added all missing XML commentation
	-Added map viewer option to fill blank screens with solid screens (it guesses which levels an empty screen belong to)

9/6/2007
	-Added Level.FreeRoomData to determine if there is free space to add objects to rooms.
	-Added Union_16.
	-Added Mandle struct (metroid handle, ala mointer)
	
9/7/2007
	-Added feature to remove object from room
	-Added feature to add enemy/object
	
9/9/2007
	-Deciphered item data. Horray! Added ItemTable, ItemEntry, ItemSeeker, ItemType, PowerUpType, ElevatorDestination, ScreenCoordinate.
	-Removed GameItem class	
	
9/11/2007
	-Added ItemEditor.cs. Can currently display most item data (data for zebetites and some unknown objects in norfair are simply displayed as "unknown").

9/13/2007
	-Finished ItemEditor and password data editor.
	
9/15/2007
	-Implemented "Easy Mode" for item editing. Items and entries can not be dragged past eachother anymore in item editor, becuase it would cause items to be skipped when the game parses item data.

9/16/2007
	-Item entries can now be dragged past eachother. Added ItemTable.ResortEntries() which swaps pointers around so that the order of item data corresponds to the order they appear on the map. (Items within an entry still can't be dragged past eachother).
	-Items can not occupy edge map locations because their coordinates correspond to special values that would cause parsing errors.	
	-Item edit can now handle enemies and rooms with multiple items	

9/17/2007
	-Fixed a bug with the map editor where rooms set to a level but not assigned a number would appear blank when the ROM is re-loaded (when a room is set to a level it is now automatically set to screen # 0). Map editor "painting" behavior was also changed to prevent this sort of problem.

9/22/2007
	-Fixed problem where, when an enemy or door was added, data would be inserted after screen data when there wasn't a segment for enemy data. Now this segment is created when needed.

9/23/2007
	-Fixed bug where Kraid combos were loaded from wrong location (they appeared in editor properly, but changes werent reflected in game). dont know what previously referenced combos are for, but they are identical to kraid combos and in ridley bank

9/29/2007
	-Redesigned map controls on item editor
9/30/2007
	Moved some information from status bar to screen editor	
	
10/2/2007
	Minor misc bug fixes

10/3/2007
	-Items are no longer displayed in "Preview Physics"
	
10/6/2007
	-Implemented Bitmap/Jpeg map image saving
	
10/7/2007
	-Implemented paletted bmp/gif map image saving using third party code.
	-Fixed bug: ScreenEditor.ShowScreen called LoadData() which reset which object was selected each time the screen editor was updated.

10/12/2007
	-Completed most of help system
	
10/13/2007	
	-Implemented feedback system
	
10/14/2007
	-Finished feedback system
	-Added ToStrings to many classes
	-Added web-based help start page

10/15/2007
	-Touched up help window
	
10/16/2007
	-Fixed bug with CTRL+TAB when there are zero structs or zero enemies
	-Fixed bug when pressing tab and there is no current selection or structs
	
Version 1.1
	
11/3/2007
	-Created IpsFile class

11/4/2007
	-Created IpsForm class and added Ips menu item to main form
	

VERSION 1.2	
	
10/11/2008
	-Added following methods to ScreenControl.cs for increased modularization:
		-RemoveSelectedItem
		-ToggleRespawn
	-Created ScreenGrid class: integrates MapControl and an arbitrary number of ScreenControls.
	-Replaces ScreenControl and MapControl on frmMain with ScreenGrid
		-Menu items were added to select grid size
		-Toolbar buttons were fixed to work with new control
		-Keyboard shortcuts and possibly some other features do not work.
10/12/2008
	-Removed stale code from frmMain.cs and ScreenControl.cs
	-Refactored ScreenControl.cs
	-Refactored frmMain.cs
	-Moved editing methods from frmMain.cs to ScreenControl.cs
	-Fixed keyboard shortcuts
	-Updated ScreenGrid so that changes made to a screen would be reflected on any other instances of that screen being displayed
	-Updated ScreenGrid so that changes made to the map would be reflected within the grid immediately.
	-Updated splash screen
10/13/2008
	-Fixed keyboard shortcuts (again) and tooltips
	-Map display window is now non-modal, can be maximized
	-Escape now closes map-maker and map-display windows
	-Fixed selection bugs in palette editor
	-Password item text is now updated when an item is dragged around on the map
	-Did some refactoring on frmStruct.cs
	-Added 50% of missing XML comments listed in warnings (43 of 86)
	-Created GlobalEventManager.cs
	-Changes frmStruct to a non-modal window
10/14/2008
	-Removed "Display Doors On Map" Button
	-Fixed bug where doors were not removed from map after showing frmDisplayMap. The only time doors are displayed on the
		map editor is when the user is making a selection to create a map
	-Added PatternTableRange.GetRanges() and PatternTableRange.GetSpriteRanges().
	-Added a selection feature to ComboEditor.cs
	-In frmStruct, replaced combo selector panel with a ComboEditor control, added a tile selector. frmStruct can now edit 
		combos. Combo editor menu item is hidden and the combo editor form is no longer accessible. Level/palette/structure
		is now selected by selecting an object in the main window.
10/15/2008
	-Refactored code in frmStruct.cs, removed 2 extra redraws of struct, much faster
	-Added alternate palette support to frmStruct.cs
	-Alternate palette display no longer effects kraid/ridley/tourain levels in frmMain
	-ScreenGrid now updates editors when an object is added/removed from a screen (including doors) to prevent screen editors
		in the grid from displaying corrupt data from old pointers
	-Fixed bug where selected structure was not displayed when the structure editor was opened
10/18/2008
	-Changes made to the selected object in a screen editor are now reflected in struct editor
	-Selection on map editor may be dragged now
	-When clicking the map editor, the view is centered in the point clicked instead of making that point the top-left screen
		of the view
	
11/22/2008
	-Fixed bug causing crash then palette key is hit and there are no items in screen
	-Fixed bug where right-clicking on map would move selection rectangle
	-Right clicking an object now deletes it
	-Fixed a bug where the first object selected in a different screen editor was not displayed in the struct editor
	
11/23/2008
	-Fixed bug where the "IPS Patch" text in the IPS Utility did not change from red to black when a patch was created or loaded
	-Feedback tab removed
	-Moved help menu items from settings menu to new help menu
	-Removed "fill empty screens" from map maker - this feature depends on the user having a solid screen at the right indecies